/*
 * @Author: 0x9DEFA478
 * @Date: 2021-11-30 17:59:41
 * @LastEditTime: 2022-06-19 22:46:19
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * QQ:2652450237
 * ============================================================================================================================================
 * 
 * 
 * 
 *                                                                                               ************      ****************************
 *                                                                                             ************      ****************************  
 *                                                                                           ************      ****************************    
 *                                                                                         ************      ****************************      
 *                                                                                       ************      ************                        
 *                                                                                     ************      ************                          
 *                                                                                   ************      ************                            
 *                                                                                 ************      ************                              
 *                                                                               ************      ************                                
 *                                                                             ************      ************                                  
 *                                                                           ************      ************                                    
 *                                                                         ************      ************                                      
 *                                                                       ************      ************                                        
 *                                                                     ************      ************                                          
 *                                                                   ************      ************                                            
 *                                                                 ************      ************                                              
 *                                                               ************      ************                                                
 *                                                             ************      ************                                                  
 *                                                           ************      ************                                                    
 *                                                         ************      ************                                                      
 *                                                       ************      ************                                                        
 *                                                     ************      ************                                                          
 *                                                   ************      ************                                                            
 *                                                 ************      ************                                                              
 *                                               ************      ************                                                                
 *                                             ************      ************                                                                  
 *                                           ************      ************                                                                    
 *                                         ************      ************                                                                      
 *                                       ************      ************                                                                        
 *                                     ************      ************                                                                          
 *                                   ************      ************                                                                            
 *                                 ************      ************                                                                              
 *                               ************      ************                                                                                
 *                             ************      ************                                                                                  
 *                           ************      ************                                                                                    
 *                         ************      ************                                                                                      
 *       ****************************      ************                                                                                        
 *     ****************************      ************                                                                                          
 *   ****************************      ************                                                                                            
 * ****************************      ************                                                                                              
 * 
 * 
 * 
 * ============================================================================================================================================
 * 
 */
#include "IP_ADC.h"




#define IP_ADC_TS_CAL1 (*((unsigned short *)0x1FF1E820))
#define IP_ADC_TS_CAL2 (*((unsigned short *)0x1FF1E840))




extern void IP_ADC_DMA_IRQ_RegularDiscontinuous(IP_ADC* ip_adc);




/**
 * @brief 内部温度传感器温度adc值转温度
 * @param Vaule adc值
 * @param Max 量程 8位:0x0100 10位:0x0400 12位:0x1000 14位:0x4000 16位:0x10000
 * @return 温度
 */
float IP_ADC_ValueToTemperatrue(unsigned short Vaule,unsigned int Max){

  unsigned int TS_CAL1;
  unsigned int TS_CAL2;
  float t;

  TS_CAL1=IP_ADC_TS_CAL1;
  TS_CAL2=IP_ADC_TS_CAL2;

  TS_CAL1=TS_CAL1*Max;
  TS_CAL1>>=16;
  TS_CAL2=TS_CAL2*Max;
  TS_CAL2>>=16;

  t=80.0f*((int)Vaule-(int)TS_CAL1)/((int)TS_CAL2-(int)TS_CAL1)+30.0f;

  return t;
}




/**
 * @brief 重初始化ADC 规则组单次转换
 * @param ip_adc 空的IP_ADC句柄
 * @param DMA_Rx 空的dma对象(已分配内存的 如果不使用可为NULL)
 * @param _adc adc句柄
 * @return noEdit
 */
void IP_ADC_RegularSingle_Init(IP_ADC* ip_adc,ADC_TypeDef* _adc){


  cIP_ADC_ADC(ip_adc)=_adc;//实例传入

  //关闭中断
  cIP_ADC_ADC(ip_adc)->IER=0U;

  ip_adc->Instance.DMA=NULL;

}

/**
 * @brief 重初始化ADC 规则不连续模式
 * @param ip_adc 已分配内存的指针
 * @param DMA DMA句柄
 * @param _adc 已分配内存的指针
 * @return 无
 */
void IP_ADC_RegularDiscontinuous_Init(IP_ADC* ip_adc,IP_DMA* DMA,ADC_TypeDef* _adc){

  cIP_ADC_ADC(ip_adc)=_adc;//实例传入
  ip_adc->Instance.DMA=DMA;

  cIP_ADC_DMA(ip_adc)->PAR=(unsigned int)&cIP_ADC_ADC(ip_adc)->DR;

  //关闭中断
  cIP_ADC_ADC(ip_adc)->IER=0U;

  //如果没有ADEN为0 置一它
  if((cIP_ADC_ADC(ip_adc)->CR&ADC_CR_ADEN)!=ADC_CR_ADEN){  
    cIP_ADC_ADC(ip_adc)->ISR=ADC_ISR_ADRDY;
    cIP_ADC_ADC(ip_adc)->CR|=ADC_CR_ADEN;
    while((cIP_ADC_ADC(ip_adc)->ISR&ADC_ISR_ADRDY)==0U){
    }
  }
  cIP_ADC_ADC(ip_adc)->CFGR=(cIP_ADC_ADC(ip_adc)->CFGR&(~ADC_CFGR_DMNGT_Msk))|(0x1U<<ADC_CFGR_DMNGT_Pos);
  

  cIP_ADC_DMA(ip_adc)->CR|=DMA_SxCR_TCIE;//DMA传输完成中断

  DMA->SetIrqCallback((void (*)(void*))IP_ADC_DMA_IRQ_RegularDiscontinuous,ip_adc);

}



